iT邦幫忙

2022 iThome 鐵人賽

DAY 11
0
自我挑戰組

初入Swift新手村的旅程系列 第 11

Day11 Swift語法( 10 ) 流程控制

  • 分享至 

  • xImage
  •  

if else 條件選擇結構

if 與 if else結構為Swift中基礎條件判斷結構,可以選擇利用單個if 或是if else來實現多條件判斷。

var a = 10
// 先宣告一個變數

單個 if 判斷 a 是否小於10

if a < 10{
    print(a)
}

if else 組合判斷

if a > 10 {
a -= 10
    print(a)
}else {
    print(a)
}

if else 多條件判斷

if a > 0 && a < 10 {
    print(a)
}else if a <= 0 {
    a = -a
    print(a)
}else if a <= 10 && a < 20 {
    a -= 10
    print(a)
}else{
    print("bigger")
}

Switch case

switch case 結構,透過對應的方式來選擇要執行的程式碼,Swift中switch可以進行任何類型的對應,並且case子句的語法和擴展更加靈活。

var charac = "a"
switch charac {
case "a":
    print("chara is a")
case "b":
    print("chara is b")
case "c":
    print("chara is c")
case "d":
    print("chara is d")
default:
    print("default")
}
// 印出 chara is a

假設case都沒有對應到的話,則會執行default,default也是可以省略不寫的。
case 的 break 以及其他用法,會在之後介紹。

switch結構可以在同一個case寫多個條件,假設有一個對應到,就會執行程式。

switch charac {
case "e", "f", "g":
    print("charac is word")
default:
    print("default")
}
// 印出 default 因為都沒對應到

case也可以是一個區間範圍

var num = 3
switch num {
case 1...3:
    print("1<=num<=3")
case 4:
    print("4")
default:
    print("no num")
}
// 印出 1<=num<=3

switch與元組一起使用
有三種方式,一種是完全匹配,一種是選擇匹配,一種是範圍匹配

var tup = (0,0)
switch tup {
case (0,1):
    print("sure")
// 完全匹配,所有元素必須完全相等
case (_,1):
    print("sim")
// 選擇匹配,可以指定元組中一些元素進行匹配
case (0...3,0...3):
    print("SIM")
// 範圍匹配,在範圍中的元素匹配上,就可以
default:
    print("")
}
// 印出 SIM

case可以宣告臨時參數
臨時變數不能起到匹配的作用

var tuple = (0,0)
switch tuple {
case (let a, 1):
    print(a)
case (let b, 1):
    print(b)
case let (a,b):
// let a ,let b 跟 let (a,b)是一樣的
    print(a,b)
default:
    print("")
}
// 印出 0 0

where條件

where是用在開發者,可能需要捕獲元組中的第一個元素,同時又需要與第一個元素相關的條件成立,可以使用where條件來實現。

switch tuple {
case (let a,1):
    print(a)
// 當元組中的兩個元素都等於0時才匹配成功
case (let b, 0) where b == 0:
    print(b)
// 當兩個都相同時,才會進入下面的case
case let (a,b) where a == b:
    print(a,b)
default:
    print("")
}

接下來,是流程跳轉的介紹


上一篇
Day10 Swift語法( 9 ) Loops
下一篇
Day12 Swift語法( 11 ) 流程跳轉
系列文
初入Swift新手村的旅程30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言